home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / sbin / update-ispell-dictionary < prev    next >
Text File  |  2009-10-02  |  4KB  |  171 lines

  1. #!/bin/sh
  2. # $Id: update-ispell-dictionary,v 1.9 2003/06/17 14:27:17 david Exp $
  3. #
  4. # Bash script to select a new ispell default dictionary.
  5. # Included as part of the Debian/GNU Linux ispell package.
  6. #
  7. # Kenneth MacDonald <K.MacDonald@ed.ac.uk> September 1995
  8. #
  9. # This script makes extensive use of 'update-alternatives' from the
  10. # dpkg suite of programs.  Priority information for each of the
  11. # alternatives is stored, read and acted upon by 'update-alternatives'.
  12. # IMPORTANT: All ispell dictionary packages should install themselves
  13. # with priority 10.  This script will then assign priority 999 to the
  14. # chosen default, and re-run update-alternatives.
  15.  
  16. # note we use "/bin/echo -e" because -e is not standard (e.g.
  17. # ash builting echo doesn't support it).
  18.  
  19. set -e
  20.  
  21. if [ $(id -u) != 0 ]; then
  22.   echo $0: You must run this as root.
  23.   exit 1
  24. fi
  25.  
  26. NEWERSCRIPT=/usr/sbin/select-default-ispell
  27.  
  28. # If $NEWERSCRIPT (provided by the dictionaries-common
  29. # package) is there, use that instead; the previous methods (the
  30. # rest of this file) are obsolete.
  31.  
  32. if [ -x $NEWERSCRIPT ] ; then
  33.     echo $0 is now obsolete, and will eventually
  34.     echo be removed.  I am running its replacement, 
  35.     echo $NEWERSCRIPT, for you...
  36.     sh -c $NEWERSCRIPT
  37.     exit $?
  38. fi
  39.  
  40. # Do nothing if running in noninteractive mode
  41. DEBIAN_FRONTEND=`echo "$DEBIAN_FRONTEND" | tr A-Z a-z`
  42. if [ "$DEBIAN_FRONTEND" = "noninteractive" ]; then
  43.     echo "$0: Running in noninteractive mode.  Not doing anything."
  44.     exit 0
  45. fi
  46.  
  47. # Find the current dictionaries on the system, and format into a menu.
  48.  
  49. get_dictionaries() {
  50.  dictionaries=`/usr/sbin/update-alternatives --display ispell-dictionary.hash \
  51.     | grep priority \
  52.     | sort -r -n -k 4 \
  53.     | sed 's+/usr/lib/ispell/++' \
  54.     | sed 's/\.hash//' \
  55.     | awk '{printf ("\\\t[%d] %s\\\n", NR, $1)}'`
  56.  
  57.  if [ ! -z "$dictionaries" ]
  58.  then 
  59.   num_dictionaries=`/bin/echo -e $dictionaries | grep -c '\[.*\]'`
  60.  else
  61.   num_dictionaries='None'
  62.  fi
  63.  
  64. }
  65. # ----------------------------------------------------------------------
  66.  
  67. # Find the current default dictionary, set to None if none found.
  68.  
  69. get_default () {
  70.  current_default=`/usr/sbin/update-alternatives \
  71.     --display ispell-dictionary.hash \
  72.     | grep 999 \
  73.     | sed 's+/usr/lib/ispell/++' \
  74.     | sed 's/\.hash//' \
  75.     | awk '{print $1}'`
  76.  
  77.  if [ -z $current_default ]
  78.  then
  79.   current_default='None'
  80.  fi
  81. }
  82.  
  83. # ----------------------------------------------------------------------
  84.  
  85. # Keep prompting for default until valid choice made.
  86.  
  87. choose_default ()
  88. {
  89.  /bin/echo
  90.  /bin/echo -e $dictionaries
  91.  
  92.  echo -n "Select the number of the default dictionary [1] "
  93.  read num
  94.  selected_num=${num:-1}
  95.  
  96.  selected=`/bin/echo -e $dictionaries | grep "\[$selected_num\]" | awk '{print $2}'`
  97.  
  98.  if [ -z $selected ]
  99.  then
  100.    /bin/echo -e "\nInvalid choice - try again!\n"
  101.    choose_default
  102.  fi
  103. }
  104.  
  105. # ----------------------------------------------------------------------
  106.  
  107. # Promote the selected dictionary to be the default.
  108.  
  109. make_default ()
  110. {
  111.  echo -n "Making $selected the default ispell dictionary..."
  112.  
  113.  update-alternatives --quiet --install /usr/lib/ispell/default.hash \
  114.     ispell-dictionary.hash /usr/lib/ispell/$selected.hash 999 \
  115.     --slave /usr/lib/ispell/default.aff ispell-dictionary.aff \
  116.     /usr/lib/ispell/$selected.aff > /dev/null
  117.  
  118.  echo "done."
  119. }
  120.  
  121. # ----------------------------------------------------------------------
  122.  
  123. # Demote the old default dictionary.
  124.  
  125. demote_default ()
  126. {
  127.  echo -n "Demoting $current_default (old default)..."
  128.  
  129.  update-alternatives --quiet --install /usr/lib/ispell/default.hash \
  130.     ispell-dictionary.hash /usr/lib/ispell/$current_default.hash 10 \
  131.     --slave /usr/lib/ispell/default.aff ispell-dictionary.aff \
  132.     /usr/lib/ispell/$current_default.aff > /dev/null
  133.  
  134.  echo "done."
  135. }
  136.  
  137. # ----------------------------------------------------------------------
  138.  
  139. /bin/echo -e "Please wait while I search for ispell dictionaries..."
  140. get_dictionaries
  141.  
  142. if [ $num_dictionaries != "None" ]
  143. then
  144.  
  145.  get_default
  146.  
  147.  if [ $num_dictionaries != "1" ]
  148.  then
  149.   choose_default
  150.  else
  151.    selected=`/bin/echo -e $dictionaries | grep '\[.*\]' | awk '{print $2}'`
  152.    echo There is only one installed dictionary - $selected.
  153.  fi
  154.  
  155.  if ([ $current_default != 'None' ] && [ $current_default != $selected ])
  156.  then
  157.   demote_default
  158.  fi
  159.  
  160.  if [ $selected != $current_default ]
  161.  then
  162.   make_default
  163.  else
  164.   echo No change - $selected is already the default.
  165.  fi
  166.  
  167. else
  168.  echo "WARNING: No ispell dictionaries found -- you should install one."
  169.  exit
  170. fi
  171.